package it.traveldream.UIBeans;

import java.util.Date;
import java.util.Iterator;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;


@ManagedBean(name="validaBean")
@RequestScoped
public class ValidatorBean {

	/**
	 * Metodo che permette di verificare se il valore preso dalla pagina jsf ?? 
	 * un valore percentuale (compreso tra 0 e 100)
	 * 
	 */
	public void isPercentage(FacesContext ctx, UIComponent component, Object value) throws ValidatorException{

		Integer toValidate = (new Double(value.toString())).intValue() ;

		if(!(toValidate >= 0 && toValidate<100))
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "","Inserire un valore percentuale"));
	}


	/**
	 *
	 * Metodo che controlla che un intero sia maggiore di 0
	 */

	public void isIntegerGreaterThanZero(FacesContext ctx, UIComponent component, Object value) throws ValidatorException{

		Integer toValidateInt = (new Double(value.toString())).intValue();

		if(!(toValidateInt > 0 ))
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "","Inserire un valore maggiore di zero"));
	}


	/**
	 *
	 * Metodo che controlla che un intero sia maggiore di 0
	 */

	public void isDoubleGreaterThanZero(FacesContext ctx, UIComponent component, Object value) throws ValidatorException{

		Double toValidateInt = new Double(value.toString());

		if(!(toValidateInt > 0 ))
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "","Inserire un valore maggiore di zero"));
	}

	/**
	 *
	 * Metodo che controlla se un intero è strettamente minore di 5
	 */

	public void isIntegerLessThan4(FacesContext ctx, UIComponent component, Object value) throws ValidatorException{

		Integer toValidate = (new Double(value.toString())).intValue();

		if(!(toValidate < 5 ))
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "","Inserire un valore minore di 5"));
	}
	
	
	/**
	 *
	 * Metodo che controlla se un intero è nell'intervallo [1,4]
	 */

	public void isIntegerBetween1and4(FacesContext ctx, UIComponent component, Object value) throws ValidatorException{

		Integer toValidate = (new Double(value.toString())).intValue();

		if(!(toValidate < 5 && toValidate > 0 ))
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "","Inserire un valore compreso tra 1 e 5"));
			
	}
	
}
